package com.google.gwt.chart.client;

import java.util.ArrayList;
import java.util.List;
import java.util.Collections;

//=========================================================================
/**
 * Title:        Ticks <br>
 * Description:  $defaultDesc$<br>
 * Copyright:    Apache Public License 2.0<br>
 * Company:      $company$<br>
 * @author James Hutton
 */
//=========================================================================
public class Ticks {

	private Tick min, max;
	private ArrayList<Tick> ticks = new ArrayList<Tick>();

	//=========================================================================
	/**
	 * Constructs a Ticks
	 */
	//=========================================================================
	public Ticks() {
		this(new Tick(0, "0"), new Tick(0, "0"));
	}

	//=========================================================================
	/**
	 * Constructs a Ticks
	 * @param min - 
	 * @param max - 
	 */
	//=========================================================================
	public Ticks(Number min, Number max) {
		this(new Tick(min, min.toString()), new Tick(max, max.toString()));
	}

	//=========================================================================
	/**
	 * Constructs a Ticks
	 * @param min - 
	 * @param max - 
	 */
	//=========================================================================
	public Ticks(Tick min, Tick max) {

		this.min = min;
		this.max = max;
		ticks.add(min);
		ticks.add(max);

	}

	//=========================================================================
	/**
	 * Method getMin
	 * @return Tick
	 */
	//=========================================================================
	public Tick getMin() {
		return min;
	}

	//=========================================================================
	/**
	 * Method getMax
	 * @return Tick
	 */
	//=========================================================================
	public Tick getMax() {
		return max;
	}

	//=========================================================================
	/**
	 * Method addTick
	 * @param tick
	 */
	//=========================================================================
	public void addTick(Tick tick) {
		ticks.add(ticks.indexOf(max), tick);
	}

	//=========================================================================
	/**
	 * Method getSize
	 * @return int
	 */
	//=========================================================================
	public int getSize() {
		return ticks.size();
	}

	//=========================================================================
	/**
	 * Method getTicks
	 * @return List<Tick>
	 */
	//=========================================================================
	public List<Tick> getTicks() {
		return Collections.unmodifiableList(ticks);
	}

	//=========================================================================
	/**
	 * Method setMin
	 * @param min
	 */
	//=========================================================================
	public void setMin(Tick min) {
		ticks.set(ticks.indexOf(this.min), min);
		this.min = min;
	}

	//=========================================================================
	/**
	 * Method setMax
	 * @param max
	 */
	//=========================================================================
	public void setMax(Tick max) {
		ticks.set(ticks.indexOf(this.max), max);
		this.max = max;
	}

}

